// 导入静态路由
import { constantRoutes, asyncRoutes } from '@/router'

const state = {
  // 所有人默认都可以访问静态路由
  routes: constantRoutes
}

const mutations = {
  setRoutes(state, newRouters) {
    // 将静态路由和新路由进行合并
    // 这对角色的不同，新路由的组成也不同
    state.routes = [...constantRoutes, ...newRouters]
  }
}
const actions = {
  // menus - 请求回来的数据
  filterRoutes({ commit }, menus) {
    // 筛选出每个角色可以访问的动态路由
    const routes = asyncRoutes.filter(item => menus.includes(item.name))
    // 将筛选出来的动态路由提交给mutations中的setRoutes进行合并
    commit('setRoutes', routes)
    // 后面会使用
    return routes
  }
}

export default {
  // 开启命名空间
  namespaced: true,
  state,
  mutations,
  actions
}
